﻿using System.Collections.Generic;
using System.Linq;
using Neptuno.Model;

namespace Neptuno.Component
{
    public class PuertosComponent : BaseComponent
    {
        public bool AgregarPuerto(Puertos Puerto)
        {
            Puerto.habilitado = true;
            List<Puertos> Puertos = new List<Model.Puertos>();
            Context.Puertos.AddObject(Puerto);

            return Context.TryToSave();
        }

        public bool Borrar(string idPuerto)
        {
            Puertos Puerto = Context.Puertos.Single(t => t.idPuerto == idPuerto);
            Puerto.habilitado = false;
            return Context.TryToSave();
        }

        public bool Habilitar(string idPuerto)
        {
            Puertos Puerto = Context.Puertos.Single(t => t.idPuerto == idPuerto);
            Puerto.habilitado = true;
            return Context.TryToSave();
        }

        public List<Puertos> Listar(bool habilitado = true)
        {
            List<Puertos> Lista = Context.Puertos.Where(t => t.habilitado == habilitado).ToList();
            return Lista;
        }

        public List<Puertos> ListarByPais(int idPais, int? skip = null, int? range = null, bool habilitado = true)
        {
            List<Puertos> Lista = Context.Puertos.Where(t => t.habilitado == habilitado && t.idPais == idPais).ToList();

            if (skip.HasValue && range.HasValue)
                Lista = Lista.Skip(skip.Value).Take(range.Value).ToList();

            return Lista;
        }

        public Puertos GetById(string idPuerto)
        {
            return Context.Puertos.SingleOrDefault(t => t.idPuerto == idPuerto);
        }

        public bool Actualizar(Puertos Puerto)
        {
            if (!string.IsNullOrEmpty(Puerto.idPuerto))
            {
                Puertos myPuerto = Context.Puertos.SingleOrDefault(t => t.idPuerto == Puerto.idPuerto);
                myPuerto.nombre = Puerto.nombre;
                myPuerto.idPais = Puerto.idPais;

                return Context.TryToSave();
            }
            else
                return true;
        }
    }
}
